package Modelo;


import java.util.ArrayList;

public class Sesion {
    
    
    private String nombre;
    private int hora;
    private int minutos;
    protected ArrayList<Entrada> l_entradas;
    protected ArrayList<ButacasDisponibles> l_butacasDisp;
    
    public Sesion(String nombre, int hora, int minutos){
        this.l_entradas = new ArrayList<Entrada>(10);
        this.l_butacasDisp = new ArrayList<ButacasDisponibles>(10);
        this.nombre = nombre;
        this.hora = hora;
        this.minutos = minutos;
    }
    
    
    /* Funciones utiles */ 
    public void addEntrada(String p, int fecha, int n_entrCompradas, int cap_sala ){
        
        Entrada entrad = new Entrada( p,  fecha,  n_entrCompradas);
        boolean add = l_entradas.add(entrad);
        
        actButacasDisponibles(entrad, cap_sala);
        
    }
    
    private void actButacasDisponibles(Entrada entr, int cap_sala){
         
      if( l_butacasDisp.isEmpty() ){
          System.out.println("hola_butacas vacias");
        ButacasDisponibles butDisp = new ButacasDisponibles(entr.getPelicula(), entr.getFecha(), cap_sala - entr.getN_entradas_compradas());
        l_butacasDisp.add(butDisp);
        System.out.println(butDisp.n_butacas_restantes);
        
      }else{
          System.out.println("holabutacas llenas");
        boolean encontrado = false;
        for( ButacasDisponibles butaca : l_butacasDisp ){
            if(butaca.getNombrePelicula().equals(entr.getNombrePelicula()) && butaca.getFecha()== entr.getFecha() ){
                encontrado = true;
                butaca.setN_butacas_restantes(butaca.getN_butacas_restantes()- entr.getN_entradas_compradas());
                System.out.println(butaca.n_butacas_restantes + " - encontradas");
            }        
        }
        if(encontrado == false){
            
            ButacasDisponibles butDisp = new ButacasDisponibles(entr.getPelicula(), entr.getFecha(), cap_sala - entr.getN_entradas_compradas());
            l_butacasDisp.add(butDisp);
            System.out.println(butDisp.n_butacas_restantes);
        }
      }
    }
    
    public int n_butacas_Disponibles(String peli, int fecha){
        int butacas_restantes = -1;
        for( ButacasDisponibles butaca : l_butacasDisp ){
            System.out.println("Butaca : " + butaca.getPeli() +" Fecha: " + butaca.getFecha()+ " vs "+ peli + "-" + fecha);
            if(butaca.getNombrePelicula().equals(peli) && butaca.getFecha() == fecha){
               
                   butacas_restantes = butaca.getN_butacas_restantes();
                   
               
            }        
        }
        
        return butacas_restantes; 
    }
    /* Getters , Setters y toString() */
            
    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public int getHora() {
        return hora;
    }

    public void setHora(int hora) {
        this.hora = hora;
    }

    public int getMinutos() {
        return minutos;
    }

    public void setMinutos(int minutos) {
        this.minutos = minutos;
    }

    public ArrayList<Entrada> getL_entradas() {
        return l_entradas;
    }

    public void setL_entradas(ArrayList<Entrada> l_entradas) {
        this.l_entradas = l_entradas;
    }

    public ArrayList<ButacasDisponibles> getL_butacasDisp() {
        return l_butacasDisp;
    }

    public void setL_butacasDisp(ArrayList<ButacasDisponibles> l_butacasDisp) {
        this.l_butacasDisp = l_butacasDisp;
    }
    
    public int getHora_Minuto(){
        return hora * 100 + minutos;
    }
    
    @Override
    public String toString(){
        return /*"" + nombre + " Hora: " +*/ hora + ":" + minutos ;
    }
       

}